/**
 * @author wcj
 * @Date 2021/6/3 15:37
 * @Version 1.0
 */
public class UnActiveQuoteTest3 {

    public static void main(String[] args) {
        System.out.println(ConstantClass.DIRECTION);
    }
}

/**
 * 访问一个类的static final属性，也不会触发类的初始化。
 * 原因有两点：第一，static final属性在准备阶段就会通过class文件中的属性表的ConstantValue进行了赋值，不会到类初始化的init方法中进行赋值，因此不会进行初始化
 * 第二，当我们在另一个类的方法中使用这个类的static final属性时，实际上通过编译阶段的常量传播优化，这个static final属性已经被编译放入到了我们调用的那个类中的常量池中
 * 也就是所我们调用的是调用类的自身的属性，而不是含有这个属性的那个类的常量
 */
class ConstantClass {
    static {
        System.out.println("ConstantClass init");
    }

    public static final String DIRECTION = "North";
}
